class Solution {
public:
    int singleNumber(vector<int>& nums) {
        std::sort(nums.begin(), nums.end());
        if (nums.size() == 1)
        {
            return nums[0];
        }
        size_t npos = -1;
        size_t pre = 0;
        size_t sul = 1;
        while (sul < nums.size())
        {
            if (nums[pre] == nums[sul])
            {
                pre += 3;
                sul = pre + 1;
                if (sul >= nums.size())
                    return nums[pre];
            }
            else
            {
                return nums[pre];
            }
        }
        return npos;
    }
};